package cn.tedu.binary;

public class Demo01 {
    public static void main(String[] args) {
        int i = 8; //1000
        //Java 运行期间 i的值 就是 2进制 1000
        // Integer.toBinaryString(i) 方法是将i的2进制存储情况，直接输出
        System.out.println(Integer.toBinaryString(i));

        //验证左移位运算的结果, 没有发生溢出的情况！
        int n = 50;
        int m = n<<1;
        System.out.println(m);
        System.out.println(Integer.toBinaryString(n));
        System.out.println(Integer.toBinaryString(m));
        int k = n<<2;
        System.out.println(k);
        System.out.println(Integer.toBinaryString(k));
        //左移位溢出问题：
        // 符号位溢出现象
        // 超范围溢出现象
        int a = n<<25;
        System.out.println(a);
        System.out.println(Integer.toBinaryString(a));
        int b = n << 26;  //发生符号位溢出
        System.out.println(b);
        System.out.println(Integer.toBinaryString(b));
        System.out.println(n<<27);
        System.out.println(Integer.toBinaryString(n<<27));
        System.out.println(n<<28);
        System.out.println(Integer.toBinaryString(n<<28));
        System.out.println(n<<30);
        System.out.println(Integer.toBinaryString(n<<30));
        System.out.println(n<<31);
        System.out.println(Integer.toBinaryString(n<<31));
        System.out.println(n<<32); //Java会对32取余数再移位，相当于移动0次
    }
}
